package com.y.lintcode;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Y2014188432
 * 全排序
 */
public class Test7 {

    static List<List<Integer>> result = new ArrayList<>();

    public static void main(String[] args) {
        int[] s = {};
        System.out.println(s.length);
        perm(s,0,s.length-1);
        System.out.println(result);
    }

    public static void perm(int[] s,int p,int q){
        if(p == q){
            add(s);
        } else {
            for (int i = p; i <= q; i++) {
                swap(s,p,i);
                perm(s,p+1,q);
                swap(s,p,i);
            }
        }
    }

    public static void add(int[] s){
        List<Integer> res = new ArrayList<>();
        for (int i:s) {
            res.add(i);
        }
        result.add(res);
    }

    public static void swap(int[] s,int p,int q){
        int temp = s[p];
        s[p] = s[q];
        s[q] = temp;
    }
}
